// 包名
package com.example.chatuidemo.slice;
// 模块引入
import com.example.chatuidemo.ResourceTable;
import ohos.agp.components.*;
import ohos.app.Context;

public class MessagePageProvider extends PageSliderProvider {
    // 外部传入的上下文对象
    private Context context;
    // 自定义的构造方法
    public MessagePageProvider(Context context) {
        super();
        this.context = context;
    }
    // 设置子页面个数，这里设置为2
    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public Object createPageInContainer(ComponentContainer componentContainer, int i) {
        // 从布局文件实例化出列表容器组件
        Component cpt = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_message_page, null, false);
        // 获取ListContainer组件
        ListContainer listContainer = (ListContainer)cpt.findComponentById(ResourceTable.Id_list_view);
        // 数据源设置
        if (i == 0) {
            listContainer.setItemProvider(new MessagePageListProvider(context));
        } else {
            listContainer.setItemProvider(new ContactPageListProvider(context));
        }
        // 添加组件到子页面
        componentContainer.addComponent(cpt);
        return cpt;
    }

    @Override
    public void destroyPageFromContainer(ComponentContainer componentContainer, int i, Object o) {
        // 子页面销毁时移除组件
        componentContainer.removeComponent((Component) o);
    }

    @Override
    public boolean isPageMatchToObject(Component component, Object o) {
        // 关联组件对象
        return true;
    }
}
